/**
 * 时间格式化工具函数
 */

/**
 * 格式化时间为相对时间
 * @param {string|Date} time - 时间
 * @returns {string} 格式化后的相对时间
 */
export function formatRelativeTime(time) {
  if (!time) return ''
  
  const date = new Date(time)
  const now = new Date()
  const diff = now.getTime() - date.getTime()
  
  // 如果时间无效，返回原字符串
  if (isNaN(date.getTime())) {
    return String(time)
  }
  
  const seconds = Math.floor(diff / 1000)
  const minutes = Math.floor(seconds / 60)
  const hours = Math.floor(minutes / 60)
  const days = Math.floor(hours / 24)
  const months = Math.floor(days / 30)
  const years = Math.floor(days / 365)
  
  if (seconds < 60) {
    return '刚刚'
  } else if (minutes < 60) {
    return `${minutes}分钟前`
  } else if (hours < 24) {
    return `${hours}小时前`
  } else if (days < 30) {
    return `${days}天前`
  } else if (months < 12) {
    return `${months}个月前`
  } else {
    return `${years}年前`
  }
}

/**
 * 格式化时间为标准格式
 * @param {string|Date} time - 时间
 * @param {string} format - 格式，默认为 'YYYY-MM-DD HH:mm:ss'
 * @returns {string} 格式化后的时间
 */
export function formatTime(time, format = 'YYYY-MM-DD HH:mm:ss') {
  if (!time) return ''
  
  const date = new Date(time)
  
  // 如果时间无效，返回原字符串
  if (isNaN(date.getTime())) {
    return String(time)
  }
  
  const year = date.getFullYear()
  const month = String(date.getMonth() + 1).padStart(2, '0')
  const day = String(date.getDate()).padStart(2, '0')
  const hours = String(date.getHours()).padStart(2, '0')
  const minutes = String(date.getMinutes()).padStart(2, '0')
  const seconds = String(date.getSeconds()).padStart(2, '0')
  
  return format
    .replace('YYYY', year)
    .replace('MM', month)
    .replace('DD', day)
    .replace('HH', hours)
    .replace('mm', minutes)
    .replace('ss', seconds)
}

/**
 * 格式化时间为简短格式（今天显示时间，其他显示日期）
 * @param {string|Date} time - 时间
 * @returns {string} 格式化后的时间
 */
export function formatShortTime(time) {
  if (!time) return ''
  
  const date = new Date(time)
  const now = new Date()
  
  // 如果时间无效，返回原字符串
  if (isNaN(date.getTime())) {
    return String(time)
  }
  
  const isToday = date.toDateString() === now.toDateString()
  
  if (isToday) {
    return formatTime(time, 'HH:mm')
  } else {
    const yesterday = new Date(now)
    yesterday.setDate(yesterday.getDate() - 1)
    const isYesterday = date.toDateString() === yesterday.toDateString()
    
    if (isYesterday) {
      return '昨天 ' + formatTime(time, 'HH:mm')
    } else {
      return formatTime(time, 'MM-DD HH:mm')
    }
  }
}